package crawler;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import java.io.*;
import java.util.*;
import java.util.stream.Collectors;


public class WebCrawler {
    public CrawlResult crawl(String url) throws IOException {
        //使用Jsoup的connect方法连接到指定的 URL，并使用get方法获取该网页的 HTML文档
        Document doc = Jsoup.connect(url).get();
        //调用Document对象的title方法，获取网页的标题
        String title = doc.title();
        //使用Document对象的select方法，通过 CSS 选择器a[href]选择所有包含href属性的<a>标签，
        // 这种标签通常表示网页中的链接
        Elements links = doc.select("a[href]");

        //将Elements集合转换为流，然后使用map方法将每个Element对象转换为其href属性的绝对URL
        // 最后使用collect方法将结果收集到一个List中
        List<String> absoluteLinks = links.stream()
                .map(link -> link.absUrl("href"))
                .collect(Collectors.toList());

        //创建一个CrawlResult对象，用于存储爬取结果
        CrawlResult result = new CrawlResult();
        //将提取到的网页标题、链接设置到CrawlResult对象中。
        result.setTitle(title);
        result.setLinks(absoluteLinks);
        //返回储存好的CrawlResult
        return result;
    }
}
